タスク定義のコンテナ名を変更するとサービス更新時に 「The container does not exist in the task definition」エラーが出てしまう

タスク定義のコンテナ名を変更するとサービス更新時に 「The container does not exist in the task definition」エラーが出てしまう

ロードバランサー利用中のECSで、タスク定義内のコンテナ名を途中で変更した際に「The container does not exist in the task definition」エラーが出てしまう時の対処法をご説明します。
Clock Icon2023.10.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていること

すでに稼働中のECSクラスターのタスク定義のコンテナ名を変更し、サービスを更新しようとしたところ「The container does not exist in the task definition」エラーが出てしまい、変更できません。

どのように対応すれば良いでしょうか?

なぜエラーになったのか

ロードバランサーが関係しています。

ECSサービス作成時にロードバランサーはコンテナ名を記憶します。

しかし、マネジメントコンソールなどでタスク定義内のコンテナ名を変更すると、新しいコンテナ名がロードバランサーに伝わらず古い情報を保持したままとなっているため、エラーが発生してしまいます。

対応方法

CLIを利用し、サービスの更新時にロードバランサー設定を変更するオプションにて新しいコンテナ名を指定します。

・コマンド例

aws ecs update-service --cluster  --service  --task-definition  --load-balancers targetGroupArn=,containerName=,containerPort=

※補足

上記設定はCLIでのみ可能です。マネジメントコンソールを利用したいという場合は、サービスの再作成をする必要があります。

参考

update-service — AWS CLI 2.13.24 Command Reference

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.